{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# _*Loading and Processing Stock-Market Time-Series Data*_"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Introduction\n",
    "\n",
    "Across many problems in finance, one starts with time series. Here, we showcase how to generate pseudo-random time-series, download actual stock-market time series from a number of common providers, and how to compute time-series similarity measures."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:16.323844Z",
     "start_time": "2020-07-13T20:25:12.717917Z"
    },
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "from qiskit.finance import QiskitFinanceError\n",
    "from qiskit.finance.data_providers import *\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\", category=DeprecationWarning)\n",
    "import datetime\n",
    "import matplotlib.pyplot as plt\n",
    "from pandas.plotting import register_matplotlib_converters\n",
    "register_matplotlib_converters()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:16.335367Z",
     "start_time": "2020-07-13T20:25:16.325777Z"
    }
   },
   "outputs": [],
   "source": [
    "data = RandomDataProvider(tickers=[\"TICKER1\", \"TICKER2\"],\n",
    "                 start = datetime.datetime(2016, 1, 1),\n",
    "                 end = datetime.datetime(2016, 1, 30),\n",
    "                 seed = 1)\n",
    "data.run()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once the data are loaded, you can run a variety of algorithms on those to aggregate the data. Notably, you can compute the covariance matrix or a variant, which would consider alternative time-series similarity measures based on <a target=\"_blank\" href=\"https://en.wikipedia.org/wiki/Dynamic_time_warping\">dynamic time warping</a> (DTW). In DTW, changes that vary in speed, e.g., one stock's price following another stock's price with a small delay, can be accommodated."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:17.431763Z",
     "start_time": "2020-07-13T20:25:17.065473Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Means:\n",
      "[33.97683271 97.61130683]\n",
      "A time-series similarity measure:\n",
      "[[1.00000000e+00 5.41888011e-04]\n",
      " [5.41888011e-04 1.00000000e+00]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A covariance matrix:\n",
      "[[2.08413157 0.20842107]\n",
      " [0.20842107 1.99542187]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "means = data.get_mean_vector()\n",
    "print(\"Means:\")\n",
    "print(means)\n",
    "\n",
    "rho = data.get_similarity_matrix()\n",
    "print(\"A time-series similarity measure:\")\n",
    "print(rho)\n",
    "plt.imshow(rho)\n",
    "plt.show()\n",
    "\n",
    "cov = data.get_covariance_matrix()\n",
    "print(\"A covariance matrix:\")\n",
    "print(cov)\n",
    "plt.imshow(cov)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you wish, you can look into the underlying pseudo-random time-series using. Please note that the private class members (starting with underscore) may change in future releases of Qiskit."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:18.273108Z",
     "start_time": "2020-07-13T20:25:18.075425Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The underlying evolution of stock prices:\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TICKER1\n",
      "[33.345584192064784, 34.167202335565946, 34.49763941174933, 33.19448218014497, 34.099838046818086, 34.5462126191821, 34.009259383821814, 34.59037748801817, 34.95494988420424, 35.24908238085977, 35.27750462217556, 35.82421760878801, 35.08776352178634, 34.92485357379329, 34.442734261113316, 35.04158047374794, 35.0813025812296, 34.78884583026451, 34.00693736790767, 33.7497451272888, 33.757887307807145, 33.48228440250777, 34.77634821690598, 35.783072532211776, 33.07191005324581, 31.182896807278134, 31.008124715222973, 30.585934303646617, 30.799577301145227]\n",
      "TICKER2\n",
      "[96.8774156647853, 98.99525441983634, 97.88323365714406, 97.50562865001707, 99.5484002575094, 100.19510325371124, 100.85816662608751, 100.34416025440004, 98.69608508354439, 98.86354982776713, 98.97256391558868, 97.7452118613441, 97.06198519956354, 96.98994151983632, 96.04518989677554, 95.94691992892332, 96.04240295639278, 96.07798919344826, 95.57169753513395, 96.16544560691977, 97.0566125612021, 97.37746086576867, 96.55923063837835, 97.29088292216379, 96.78944290369674, 97.66860352198472, 96.59681610510728, 97.51128330823606, 97.49121985362058]\n"
     ]
    }
   ],
   "source": [
    "print(\"The underlying evolution of stock prices:\")\n",
    "for (cnt, s) in enumerate(data._tickers):\n",
    "    plt.plot(data._data[cnt], label=s)\n",
    "plt.legend()\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()\n",
    "\n",
    "for (cnt, s) in enumerate(data._tickers):\n",
    "    print(s)\n",
    "    print(data._data[cnt])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Clearly, you can adapt the number and names of tickers and the range of dates: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:19.448980Z",
     "start_time": "2020-07-13T20:25:19.219411Z"
    },
    "tags": [
     "nbsphinx-thumbnail"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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7jq1rGPHjpx//vn86U9/ol27drRv354JEyYA8M0333DRRRcxcOBAmjVrxqOPPsqHH35It27daN++PZs2bQLg5ptv5q677iIhIYGWLVvy+eefA5CUlMQFF1xA586d6dy5M/Pnzz+13549e3LNNdfQunVrhg8fjqoye/ZsBg0adCq2GTNmcNVVVwHuwDRp0iTeffddZsyYYSdOjSlnAnYoZHaPf7aK1T8fKtV9tmlYg8euaFvgNitXrqRLly6nLf/kk09YunQpy5YtY8+ePXTt2pULL7wQgGXLlrFmzRrq1KlDs2bNuP3221m0aBEvvfQSL7/8Mi+++CLgEvmiRYvYtGkTvXr1YuPGjdSvX58ZM2YQGRnJhg0buO6660hMTATgp59+YtWqVTRs2JAePXowb948evXqxd13301KSgpRUVG888473HrrrQDMnz+fuLg44uPj6dmzJ9OmTWPw4MGl+REaYwKYtdyL4fvvv+e6664jPDyc6OhoLrroIhYvXgxA165dadCgAZUqVSI+Pp5+/foB0L59e5KSkk7tY+jQoYSFhdGiRQuaNWvG2rVrSU1N5be//S3t27dnyJAhrF69+tT23bp1IyYmhrCwMDp16kRSUhIiwo033sgHH3zAgQMH+OGHHxgwYADgumSGDRsGwLBhw6xrxphyJiha7oW1sP2lbdu2TJ48uUjPqVSp0qn7YWFhpx6HhYWRlpZ2al3uYYgiwgsvvEB0dDTLli0jIyODyMjIPPcbHh5+al+33HILV1xxBZGRkQwZMoQKFSqQnp7Oxx9/zJQpU3jiiSdOXbD066+/Ur169SK9H2NMcLKWewF69+7NiRMnGD169Klly5cvp1atWkyYMIH09HRSUlKYO3cu3bp1K9K+J02aREZGBps2bWLz5s20atWKgwcP0qBBA8LCwnj//fdJT08vdD8NGzakYcOGjBo1iltuuQWAWbNm0aFDB7Zv305SUhJbt25l8ODBfPrpp0X7AIwxQcuSewFEhE8//ZSZM2cSHx9P27ZtGTlyJNdffz0dOnSgY8eO9O7dm2effZazzjqrSPtu0qQJ3bp1Y8CAAbzxxhtERkZy9913M3bsWDp27MjatWupWrXqGe1r+PDhNG7cmLPPPhtwXTKZJ1YzDR482LpmjClHRFW9joGEhATNPHGYac2aNaeSVai5+eabufzyy7nmmmtK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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "data = RandomDataProvider(tickers=[\"CompanyA\", \"CompanyB\", \"CompanyC\"],\n",
    "                 start = datetime.datetime(2015, 1, 1),\n",
    "                 end = datetime.datetime(2016, 1, 30),\n",
    "                 seed = 1)\n",
    "data.run()\n",
    "for (cnt, s) in enumerate(data._tickers):\n",
    "    plt.plot(data._data[cnt], label=s)\n",
    "plt.legend()\n",
    "plt.xticks(rotation=90)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Access to closing-price time-series\n",
    "\n",
    "While the access to real-time data usually requires a payment, it is possible \n",
    "to access historical (adjusted) closing prices via Wikipedia and Quandl\n",
    "free of charge, following registration at:\n",
    "https://www.quandl.com/?modal=register\n",
    "In the code below, one needs to specify actual tickers of actual NASDAQ\n",
    "issues and the access token you obtain from Quandl; by running the code below, you agree to the Quandl terms and \n",
    "conditions, including a liability waiver.\n",
    "Notice that at least two tickers are required for the computation\n",
    "of covariance and time-series matrices, but hundreds of tickers may go \n",
    "beyond the fair usage limits of Quandl."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:35.200648Z",
     "start_time": "2020-07-13T20:25:19.646682Z"
    }
   },
   "outputs": [],
   "source": [
    "stocks = [\"GOOG\", \"AAPL\"]\n",
    "\n",
    "token = \"REPLACE-ME\"\n",
    "if token != \"REPLACE-ME\":\n",
    "    try:\n",
    "        wiki = WikipediaDataProvider(\n",
    "                         token = token,\n",
    "                         tickers = stocks,\n",
    "                         start = datetime.datetime(2016,1,1),\n",
    "                         end = datetime.datetime(2016,1,30))\n",
    "        wiki.run()\n",
    "    except QiskitFinanceError as ex:\n",
    "        print(ex)\n",
    "        print(\"Error retrieving data.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Once the data are loaded, you can again compute the covariance matrix or its DTW variants."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:35.209735Z",
     "start_time": "2020-07-13T20:25:35.203166Z"
    }
   },
   "outputs": [],
   "source": [
    "if token != \"REPLACE-ME\":\n",
    "    if wiki._data:\n",
    "        if wiki._n <= 1: \n",
    "            print(\"Not enough wiki data to plot covariance or time-series similarity. Please use at least two tickers.\")\n",
    "        else:\n",
    "            rho = wiki.get_similarity_matrix()\n",
    "            print(\"A time-series similarity measure:\")\n",
    "            print(rho)\n",
    "            plt.imshow(rho)\n",
    "            plt.show()\n",
    "\n",
    "            cov = wiki.get_covariance_matrix()\n",
    "            print(\"A covariance matrix:\")\n",
    "            print(cov)\n",
    "            plt.imshow(cov)\n",
    "            plt.show()\n",
    "    else:\n",
    "        print('No wiki data loaded.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you wish, you can look into the underlying time-series using:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:25:35.232224Z",
     "start_time": "2020-07-13T20:25:35.212691Z"
    }
   },
   "outputs": [],
   "source": [
    "if token != \"REPLACE-ME\":\n",
    "    if wiki._data:\n",
    "        print(\"The underlying evolution of stock prices:\")\n",
    "        for (cnt, s) in enumerate(stocks):\n",
    "            plt.plot(wiki._data[cnt], label=s)\n",
    "        plt.legend()\n",
    "        plt.xticks(rotation=90)\n",
    "        plt.show()\n",
    "\n",
    "        for (cnt, s) in enumerate(stocks):\n",
    "            print(s)\n",
    "            print(wiki._data[cnt])\n",
    "    else:\n",
    "        print('No wiki data loaded.')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### [Optional] Setup token to access recent, fine-grained time-series\n",
    "\n",
    "If you would like to download professional data, you will have to set-up a token with one of the major providers. Let us now illustrate the data with NASDAQ Data on Demand, which can supply bid and ask prices in arbitrary resolution, as well as aggregates such as daily adjusted closing prices, for NASDAQ and NYSE issues.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you don't have NASDAQ Data on Demand license, you can contact NASDAQ (cf. https://business.nasdaq.com/intel/GIS/Nasdaq-Data-on-Demand.html) to obtain a trial or paid license.\n",
    "\n",
    "If and when you have access to NASDAQ Data on Demand using your own token, you should replace REPLACE-ME below with the token. \n",
    "To assure the security of the connection, you should also have your own means of validating NASDAQ's certificates. The DataOnDemandProvider constructor has an optional argument `verify`, which can be `None` or a string or a boolean. If it is `None`, certify certificates will be used (default). If verify is a string, it should be pointing to a certificate for the HTTPS connection to NASDAQ (dataondemand.nasdaq.com), either in the form of a CA_BUNDLE file or a directory wherein to look.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:26:39.983133Z",
     "start_time": "2020-07-13T20:26:39.977794Z"
    }
   },
   "outputs": [],
   "source": [
    "token = \"REPLACE-ME\"\n",
    "if token != \"REPLACE-ME\":\n",
    "    try:\n",
    "        nasdaq = DataOnDemandProvider(token = token,\n",
    "                     tickers = [\"GOOG\", \"AAPL\"],\n",
    "                     start = datetime.datetime(2016,1,1),\n",
    "                     end = datetime.datetime(2016,1,2))\n",
    "        nasdaq.run()\n",
    "        for (cnt, s) in enumerate(nasdaq._tickers):\n",
    "            plt.plot(nasdaq._data[cnt], label=s)\n",
    "        plt.legend()\n",
    "        plt.xticks(rotation=90)\n",
    "        plt.show()\n",
    "    except QiskitFinanceError as ex:\n",
    "        print(ex)\n",
    "        print(\"Error retrieving data.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another major vendor of stock market data is Exchange Data International (EDI), whose API can be used to query over 100 emerging and frontier markets that are Africa, Asia, Far East, Latin America and Middle East, as well as the more established ones. See:\n",
    "https://www.exchange-data.com/pricing-data/adjusted-prices.php#exchange-coverage\n",
    "for an overview of the coverage.\n",
    "\n",
    "The access again requires a valid access token to replace REPLACE-ME below. The token can be obtained on a trial or paid-for basis at:\n",
    "https://www.quandl.com/ "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:26:40.533982Z",
     "start_time": "2020-07-13T20:26:40.417584Z"
    }
   },
   "outputs": [],
   "source": [
    "token = \"REPLACE-ME\"\n",
    "if token != \"REPLACE-ME\":\n",
    "    try:\n",
    "        lse = ExchangeDataProvider(token = token,\n",
    "                     tickers = [\"AEO\", \"ABBY\", \"ADIG\", \"ABF\", \n",
    "                                \"AEP\", \"AAL\", \"AGK\", \"AFN\", \"AAS\", \"AEFS\"],\n",
    "                     stockmarket = StockMarket.LONDON,\n",
    "                     start=datetime.datetime(2018, 1, 1),\n",
    "                     end=datetime.datetime(2018, 12, 31))\n",
    "        lse.run()\n",
    "        for (cnt, s) in enumerate(lse._tickers):\n",
    "            plt.plot(lse._data[cnt], label=s)\n",
    "        plt.legend()\n",
    "        plt.xticks(rotation=90)\n",
    "        plt.show()\n",
    "    except QiskitFinanceError as ex: \n",
    "        print(ex)\n",
    "        print(\"Error retrieving data.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One can also access Yahoo Finance Data, no token needed, from Yahoo! Finance."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "try:\n",
    "    data = YahooDataProvider(\n",
    "                 tickers = [\"AEO\", \"ABBY\", \"AEP\", \"AAL\", \"AFN\"],\n",
    "                 start=datetime.datetime(2018, 1, 1),\n",
    "                 end=datetime.datetime(2018, 12, 31))\n",
    "    data.run()\n",
    "    for (cnt, s) in enumerate(data._tickers):\n",
    "        plt.plot(data._data[cnt], label=s)\n",
    "    plt.legend()\n",
    "    plt.xticks(rotation=90)\n",
    "    plt.show()\n",
    "except QiskitFinanceError as ex: \n",
    "    data = None\n",
    "    print(ex)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the actual use of the data, please see the <a href=\"1_portfolio_optimization.ipynb\">portfolio_optimization</a> or <a href=\"2_portfolio_diversification.ipynb\">portfolio_diversification</a> notebooks. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-07-13T20:26:43.677985Z",
     "start_time": "2020-07-13T20:26:43.671205Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<h3>Version Information</h3><table><tr><th>Qiskit Software</th><th>Version</th></tr><tr><td>Qiskit</td><td>None</td></tr><tr><td>Terra</td><td>0.15.1</td></tr><tr><td>Aer</td><td>0.6.1</td></tr><tr><td>Ignis</td><td>0.4.0</td></tr><tr><td>Aqua</td><td>0.7.5</td></tr><tr><td>IBM Q Provider</td><td>0.8.0</td></tr><tr><th>System information</th></tr><tr><td>Python</td><td>3.7.4 (default, Aug 13 2019, 15:17:50) \n",
       "[Clang 4.0.1 (tags/RELEASE_401/final)]</td></tr><tr><td>OS</td><td>Darwin</td></tr><tr><td>CPUs</td><td>2</td></tr><tr><td>Memory (Gb)</td><td>12.0</td></tr><tr><td colspan='2'>Wed Aug 12 13:20:52 2020 EDT</td></tr></table>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div style='width: 100%; background-color:#d5d9e0;padding-left: 10px; padding-bottom: 10px; padding-right: 10px; padding-top: 5px'><h3>This code is a part of Qiskit</h3><p>&copy; Copyright IBM 2017, 2020.</p><p>This code is licensed under the Apache License, Version 2.0. You may<br>obtain a copy of this license in the LICENSE.txt file in the root directory<br> of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.<p>Any modifications or derivative works of this code must retain this<br>copyright notice, and modified files need to carry a notice indicating<br>that they have been altered from the originals.</p></div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import qiskit.tools.jupyter\n",
    "%qiskit_version_table\n",
    "%qiskit_copyright"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
